WebGLã¬ã³ããªã³ã°ã®ããã©ãŒãã³ã¹ãæå€§éã«åŒãåºããŸãããïŒWebã¢ããªã±ãŒã·ã§ã³ã§å¹ççãªã¬ã³ããªã³ã°ãå®çŸããããã®ãã³ãã³ããããã¡åŠçéåºŠã®æé©åããã¹ããã©ã¯ãã£ã¹ãããã³ãã¯ããã¯ã«ã€ããŠè§£èª¬ããŸãã
WebGLã¬ã³ããŒãã³ãã«ã®ããã©ãŒãã³ã¹ïŒã³ãã³ããããã¡åŠçéåºŠã®æé©å
WebGLã¯ãWebãã©ãŠã¶ã§é«æ§èœãª2Dããã³3Dã°ã©ãã£ãã¯ã¹ãæäŸããããã®æšæºãšãªã£ãŠããŸããWebã¢ããªã±ãŒã·ã§ã³ããŸããŸãé«åºŠã«ãªãã«ã€ããŠãã¹ã ãŒãºã§å¿çæ§ã®é«ããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãæäŸããããã«ã¯ãWebGLã¬ã³ããªã³ã°ã®ããã©ãŒãã³ã¹ãæé©åããããšãäžå¯æ¬ ã§ããWebGLã®ããã©ãŒãã³ã¹ã«ãããéèŠãªåŽé¢ã¯ãGPUã«éä¿¡ãããäžé£ã®åœä»€ã§ããã³ãã³ããããã¡ãåŠçãããé床ã§ãããã®èšäºã§ã¯ãã³ãã³ããããã¡ã®åŠçé床ã«åœ±é¿ãäžããèŠå ãæ¢ããæé©åã®ããã®å®è·µçãªãã¯ããã¯ãæäŸããŸãã
WebGLã¬ã³ããªã³ã°ãã€ãã©ã€ã³ãçè§£ãã
ã³ãã³ããããã¡ã®æé©åã«å ¥ãåã«ãWebGLã¬ã³ããªã³ã°ãã€ãã©ã€ã³ãçè§£ããããšãéèŠã§ãããã®ãã€ãã©ã€ã³ã¯ãããŒã¿ãç»é¢ã«è¡šç€ºãããæçµçãªç»åã«å€æããããŸã§ã®äžé£ã®ã¹ãããã衚ããŸãããã€ãã©ã€ã³ã®äž»ãªã¹ããŒãžã¯æ¬¡ã®ãšããã§ãïŒ
- é ç¹åŠçïŒ ãã®ã¹ããŒãžã§ã¯ã3Dã¢ãã«ã®é ç¹ãåŠçãããªããžã§ã¯ã空éããã¹ã¯ãªãŒã³ç©ºéã«å€æããŸããé ç¹ã·ã§ãŒããŒããã®ã¹ããŒãžãæ åœããŸãã
- ã©ã¹ã¿ã©ã€ãŒãŒã·ã§ã³ïŒ ãã®ã¹ããŒãžã§ã¯ã倿ãããé ç¹ããã©ã°ã¡ã³ãïŒã¬ã³ããªã³ã°ãããåã ã®ãã¯ã»ã«ïŒã«å€æããŸãã
- ãã©ã°ã¡ã³ãåŠçïŒ ãã®ã¹ããŒãžã§ã¯ããã©ã°ã¡ã³ããåŠçããæçµçãªè²ããã®ä»ã®ããããã£ã決å®ããŸãããã©ã°ã¡ã³ãã·ã§ãŒããŒããã®ã¹ããŒãžãæ åœããŸãã
- åºåããŒãžïŒ ãã®ã¹ããŒãžã§ã¯ããã©ã°ã¡ã³ããæ¢åã®ãã¬ãŒã ãããã¡ãšçµåãããã¬ã³ãã£ã³ã°ããã®ä»ã®ãšãã§ã¯ããé©çšããŠæçµçãªç»åãçæããŸãã
CPUã¯ããŒã¿ãæºåããGPUã«ã³ãã³ããçºè¡ããŸããã³ãã³ããããã¡ã¯ããããã®ã³ãã³ãã®ã·ãŒã±ã³ã·ã£ã«ãªãªã¹ãã§ããGPUããã®ãããã¡ãéãåŠçã§ããã°ã§ããã»ã©ãã·ãŒã³ã¯éãã¬ã³ããªã³ã°ã§ããŸãããã€ãã©ã€ã³ãçè§£ããããšã§ãéçºè ã¯ããã«ããã¯ãç¹å®ããç¹å®ã®ã¹ããŒãžãæé©åããŠå šäœçãªããã©ãŒãã³ã¹ãåäžãããããšãã§ããŸãã
ã³ãã³ããããã¡ã®åœ¹å²
ã³ãã³ããããã¡ã¯ãJavaScriptã³ãŒãïŒãŸãã¯WebAssemblyïŒãšGPUã®éã®æ©æž¡ããããŸããããã«ã¯æ¬¡ã®ãããªåœä»€ãå«ãŸããŸãïŒ
- ã·ã§ãŒããŒããã°ã©ã ã®èšå®
- ãã¯ã¹ãã£ã®ãã€ã³ã
- ãŠããã©ãŒã ïŒã·ã§ãŒããŒå€æ°ïŒã®èšå®
- é ç¹ãããã¡ã®ãã€ã³ã
- ãããŒã³ãŒã«ã®çºè¡
ãããã®åã³ãã³ãã«ã¯é¢é£ããã³ã¹ãããããŸããçºè¡ããã³ãã³ããå€ããã°å€ãã»ã©ããŸããããã®ã³ãã³ããè€éã§ããã°ããã»ã©ãGPUããããã¡ãåŠçããã®ã«æéãããããŸãããããã£ãŠãã³ãã³ããããã¡ã®ãµã€ãºãšè€éããæå°éã«æããããšããéèŠãªæé©åæŠç¥ãšãªããŸãã
ã³ãã³ããããã¡åŠçé床ã«åœ±é¿ãäžããèŠå
GPUãã³ãã³ããããã¡ãåŠçããé床ã«ã¯ãããã€ãã®èŠå ã圱é¿ããŸããããã«ã¯ä»¥äžãå«ãŸããŸãïŒ
- ãããŒã³ãŒã«ã®æ°ïŒ ãããŒã³ãŒã«ã¯æãã³ã¹ãã®ãããæäœã§ããåãããŒã³ãŒã«ã¯ãç¹å®ã®ããªããã£ãïŒäŸïŒäžè§åœ¢ïŒãã¬ã³ããªã³ã°ããããGPUã«æç€ºããŸãããããŒã³ãŒã«ã®æ°ãæžããããšã¯ãå€ãã®å Žåãããã©ãŒãã³ã¹ãåäžãããæã广çãªåäžã®æ¹æ³ã§ãã
- ã¹ããŒã倿ŽïŒ ç°ãªãã·ã§ãŒããŒããã°ã©ã ããã¯ã¹ãã£ããŸãã¯ãã®ä»ã®ã¬ã³ããªã³ã°ã¹ããŒããžã®åãæ¿ãã¯ãGPUã«ã»ããã¢ããæäœãå®è¡ãããå¿ èŠããããŸãããããã®ã¹ããŒã倿Žãæå°éã«æããããšã§ããªãŒããŒããããå€§å¹ ã«åæžã§ããŸãã
- ãŠããã©ãŒã ã®æŽæ°ïŒ ãŠããã©ãŒã ãç¹ã«é »ç¹ã«æŽæ°ããããŠããã©ãŒã ã®æŽæ°ã¯ãããã«ããã¯ã«ãªãå¯èœæ§ããããŸãã
- ããŒã¿è»¢éïŒ CPUããGPUãžã®ããŒã¿è»¢éïŒäŸïŒé ç¹ãããã¡ã®æŽæ°ïŒã¯æ¯èŒçé ãæäœã§ããããŒã¿è»¢éãæå°éã«æããããšã¯ãããã©ãŒãã³ã¹ã«ãšã£ãŠäžå¯æ¬ ã§ãã
- GPUã¢ãŒããã¯ãã£ïŒ GPUã«ãã£ãŠã¢ãŒããã¯ãã£ãããã©ãŒãã³ã¹ç¹æ§ãç°ãªããŸããWebGLã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ã¯ãã¿ãŒã²ããGPUã«ãã£ãŠå€§ããç°ãªãå¯èœæ§ããããŸãã
- ãã©ã€ãã®ãªãŒããŒãããïŒ ã°ã©ãã£ãã¯ã¹ãã©ã€ãã¯ãWebGLã³ãã³ããGPUåºæã®åœä»€ã«å€æããäžã§éèŠãªåœ¹å²ãæãããŸãããã©ã€ãã®ãªãŒããŒãããã¯ããã©ãŒãã³ã¹ã«åœ±é¿ãäžããå¯èœæ§ãããããã©ã€ãã«ãã£ãŠæé©åã®ã¬ãã«ãç°ãªãå ŽåããããŸãã
æé©åãã¯ããã¯
以äžã¯ãWebGLã§ã³ãã³ããããã¡ã®åŠçé床ãæé©åããããã®ããã€ãã®ãã¯ããã¯ã§ãïŒ
1. ãããã³ã°
ãããã³ã°ã¯ãè€æ°ã®ãªããžã§ã¯ããåäžã®ãããŒã³ãŒã«ã«ãŸãšããããšã§ããããã«ããããããŒã³ãŒã«ã®æ°ãšé¢é£ããã¹ããŒã倿Žãæžå°ããŸãã
äŸïŒ 100åã®åå¥ã®ãã¥ãŒãã100åã®ãããŒã³ãŒã«ã§ã¬ã³ããªã³ã°ãã代ããã«ããã¹ãŠã®ãã¥ãŒãã®é ç¹ãåäžã®é ç¹ãããã¡ã«ãŸãšãã1åã®ãããŒã³ãŒã«ã§ã¬ã³ããªã³ã°ããŸãã
ãããã³ã°ã«ã¯ããŸããŸãªæŠç¥ããããŸãïŒ
- éçãããã³ã°ïŒ ç§»åãããé »ç¹ã«å€æŽããããããªãéçãªãªããžã§ã¯ããçµåããŸãã
- åçãããã³ã°ïŒ åããããªã¢ã«ãå ±æããç§»åãŸãã¯å€æŽãããªããžã§ã¯ããçµåããŸãã
å®è·µäŸïŒ ããã€ãã®äŒŒããããªæšãããã·ãŒã³ãèããŠã¿ãŸããããåæšãåå¥ã«æç»ãã代ããã«ããã¹ãŠã®æšã®çµåããããžãªã¡ããªãå«ãåäžã®é ç¹ãããã¡ãäœæããŸããæ¬¡ã«ãåäžã®ãããŒã³ãŒã«ã䜿çšããŠãã¹ãŠã®æšãäžåºŠã«ã¬ã³ããªã³ã°ããŸãããŠããã©ãŒã è¡åã䜿çšããŠãåæšãåå¥ã«é 眮ã§ããŸãã
2. ã€ã³ã¹ã¿ã³ã·ã³ã°
ã€ã³ã¹ã¿ã³ã·ã³ã°ã䜿çšãããšãåäžã®ãããŒã³ãŒã«ã§åããªããžã§ã¯ãã®è€æ°ã®ã³ããŒãç°ãªã倿ã§ã¬ã³ããªã³ã°ã§ããŸããããã¯ã倿°ã®åäžãªããžã§ã¯ããã¬ã³ããªã³ã°ããå Žåã«ç¹ã«äŸ¿å©ã§ãã
äŸïŒ èåãé³¥ã®çŸ€ãããŸãã¯äººã ã®çŸ€è¡ãã¬ã³ããªã³ã°ããå Žåã
ã€ã³ã¹ã¿ã³ã·ã³ã°ã¯ã倿è¡åãè²ããã®ä»ã®ããããã£ãªã©ãã€ã³ã¹ã¿ã³ã¹ããšã®ããŒã¿ãå«ãé ç¹å±æ§ã䜿çšããŠå®è£ ãããããšããããããŸãããããã®å±æ§ã¯ãåã€ã³ã¹ã¿ã³ã¹ã®å€èгã倿Žããããã«é ç¹ã·ã§ãŒããŒã§ã¢ã¯ã»ã¹ãããŸãã
å®è·µäŸïŒ å°é¢ã«æ£ãã°ã£ã倿°ã®ã³ã€ã³ãã¬ã³ããªã³ã°ããã«ã¯ãåäžã®ã³ã€ã³ã¢ãã«ãäœæããŸããæ¬¡ã«ãã€ã³ã¹ã¿ã³ã·ã³ã°ã䜿çšããŠãã³ã€ã³ã®è€æ°ã®ã³ããŒãç°ãªãäœçœ®ãšåãã§ã¬ã³ããªã³ã°ããŸããåã€ã³ã¹ã¿ã³ã¹ã¯ç¬èªã®å€æè¡åãæã€ããšãã§ããããã¯é ç¹å±æ§ãšããŠæž¡ãããŸãã
3. ã¹ããŒã倿Žã®åæž
ã·ã§ãŒããŒããã°ã©ã ã®åãæ¿ããç°ãªããã¯ã¹ãã£ã®ãã€ã³ããªã©ã®ã¹ããŒã倿Žã¯ã倧ããªãªãŒããŒããããåŒãèµ·ããå¯èœæ§ããããŸãããããã®å€æŽãæå°éã«æããã«ã¯ã次ã®ããã«ããŸãïŒ
- ãããªã¢ã«ã«ãããªããžã§ã¯ãã®ãœãŒãïŒ åããããªã¢ã«ã䜿çšãããªããžã§ã¯ãããŸãšããŠã¬ã³ããªã³ã°ããã·ã§ãŒããŒããã°ã©ã ãšãã¯ã¹ãã£ã®åãæ¿ããæå°éã«æããŸãã
- ãã¯ã¹ãã£ã¢ãã©ã¹ã®äœ¿çšïŒ è€æ°ã®ãã¯ã¹ãã£ãåäžã®ãã¯ã¹ãã£ã¢ãã©ã¹ã«çµåããŠããã¯ã¹ãã£ãã€ã³ãæäœã®æ°ãæžãããŸãã
- ãŠããã©ãŒã ãããã¡ã®äœ¿çšïŒ ãŠããã©ãŒã ãããã¡ã䜿çšããŠé¢é£ãããŠããã©ãŒã ãã°ã«ãŒãåããåäžã®ã³ãã³ãã§æŽæ°ããŸãã
å®è·µäŸïŒ ç°ãªããã¯ã¹ãã£ã䜿çšããè€æ°ã®ãªããžã§ã¯ããããå Žåããããã®ãã¯ã¹ãã£ããã¹ãŠåäžã®ç»åã«çµåãããã¯ã¹ãã£ã¢ãã©ã¹ãäœæããŸããæ¬¡ã«ãUV座æšã䜿çšããŠãåãªããžã§ã¯ãã«é©ãããã¯ã¹ãã£é åãéžæããŸãã
4. ã·ã§ãŒããŒã®æé©å
ã·ã§ãŒããŒã³ãŒããæé©åãããšãããã©ãŒãã³ã¹ãå€§å¹ ã«åäžããŸãã以äžã«ããã€ãã®ãã³ãã瀺ããŸãïŒ
- èšç®ã®æå°åïŒ äžè§é¢æ°ãå¹³æ¹æ ¹ãææ°é¢æ°ãªã©ãã·ã§ãŒããŒã§ã®é«ã³ã¹ããªèšç®ã®æ°ãæžãããŸãã
- äœç²ŸåºŠã®ããŒã¿åã®äœ¿çšïŒ å¯èœãªå Žåã¯äœç²ŸåºŠã®ããŒã¿åïŒäŸïŒ`mediump`ãŸãã¯`lowp`ïŒã䜿çšããŠãã¡ã¢ãªåž¯åå¹ ãåæžããããã©ãŒãã³ã¹ãåäžãããŸãã
- åå²ã®åé¿ïŒ åå²ïŒäŸïŒ`if`æïŒã¯äžéšã®GPUã§ã¯é ããªãå¯èœæ§ããããŸãããã¬ã³ãã£ã³ã°ãã«ãã¯ã¢ããããŒãã«ãªã©ã®ä»£æ¿æè¡ã䜿çšããŠãåå²ãé¿ããããã«ããŠãã ããã
- ã«ãŒãã®ã¢ã³ããŒã«ïŒ ã«ãŒããã¢ã³ããŒã«ãããšãã«ãŒãã®ãªãŒããŒããããæžããããšã§ããã©ãŒãã³ã¹ãåäžããããšããããŸãã
å®è·µäŸïŒ ãã©ã°ã¡ã³ãã·ã§ãŒããŒã§å€ã®å¹³æ¹æ ¹ãèšç®ãã代ããã«ãå¹³æ¹æ ¹ãäºåã«èšç®ããŠã«ãã¯ã¢ããããŒãã«ã«ä¿åããŸããæ¬¡ã«ãã¬ã³ããªã³ã°äžã«ã«ãã¯ã¢ããããŒãã«ã䜿çšããŠå¹³æ¹æ ¹ãè¿äŒŒããŸãã
5. ããŒã¿è»¢éã®æå°å
CPUããGPUãžã®ããŒã¿è»¢éã¯æ¯èŒçé ãæäœã§ããããŒã¿è»¢éãæå°éã«æããã«ã¯ã次ã®ããã«ããŸãïŒ
- é ç¹ãããã¡ãªããžã§ã¯ãïŒVBOïŒã®äœ¿çšïŒ é ç¹ããŒã¿ãVBOã«ä¿åããŠãæ¯ãã¬ãŒã 転éããã®ãé¿ããŸãã
- ã€ã³ããã¯ã¹ãããã¡ãªããžã§ã¯ãïŒIBOïŒã®äœ¿çšïŒ IBOã䜿çšããŠé ç¹ãåå©çšãã転éããå¿ èŠã®ããããŒã¿éãæžãããŸãã
- ããŒã¿ãã¯ã¹ãã£ã®äœ¿çšïŒ ãã¯ã¹ãã£ã䜿çšããŠãã«ãã¯ã¢ããããŒãã«ãäºåèšç®ãããå€ãªã©ãã·ã§ãŒããŒããã¢ã¯ã»ã¹ããå¿ èŠã®ããããŒã¿ãä¿åããŸãã
- åçãããã¡æŽæ°ã®æå°åïŒ ãããã¡ãé »ç¹ã«æŽæ°ããå¿ èŠãããå Žåã¯ã倿Žãããéšåã®ã¿ãæŽæ°ããããã«ããŠãã ããã
å®è·µäŸïŒ æ¯ãã¬ãŒã 倿°ã®ãªããžã§ã¯ãã®äœçœ®ãæŽæ°ããå¿ èŠãããå Žåã¯ããã©ã³ã¹ãã©ãŒã ãã£ãŒãããã¯ã䜿çšããŠGPUäžã§æŽæ°ãå®è¡ããããšãæ€èšããŠãã ãããããã«ãããããŒã¿ãCPUã«æ»ããŠããGPUã«æ»ããšãã転éãåé¿ã§ããŸãã
6. WebAssemblyã®æŽ»çš
WebAssemblyïŒWASMïŒã䜿çšãããšããã©ãŠã¶ã§ã»ãŒãã€ãã£ãã®é床ã§ã³ãŒããå®è¡ã§ããŸããWebGLã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ãéèŠãªéšåã«WebAssemblyã䜿çšãããšãããã©ãŒãã³ã¹ãå€§å¹ ã«åäžããŸããããã¯ãè€éãªèšç®ãããŒã¿åŠçã¿ã¹ã¯ã«ç¹ã«å¹æçã§ãã
äŸïŒ ç©çã·ãã¥ã¬ãŒã·ã§ã³ãçµè·¯æ¢çŽ¢ããã®ä»ã®èšç®éçŽçãªã¿ã¹ã¯ãå®è¡ããããã«WebAssemblyã䜿çšããã
WebAssemblyã䜿çšããŠã³ãã³ããããã¡èªäœãçæããããšã§ãJavaScriptã®è§£éã®ãªãŒããŒããããåæžã§ããå¯èœæ§ããããŸãããã ããWebAssembly/JavaScriptå¢çã®ã³ã¹ããå©ç¹ãäžåããªãããã«ãæ³šææ·±ããããã¡ã€ãªã³ã°ããŠãã ããã
7. ãªã¯ã«ãŒãžã§ã³ã«ãªã³ã°
ãªã¯ã«ãŒãžã§ã³ã«ãªã³ã°ã¯ãä»ã®ãªããžã§ã¯ãã«ãã£ãŠé ãããŠãããªããžã§ã¯ãã®ã¬ã³ããªã³ã°ãé²ãããã®ãã¯ããã¯ã§ããããã«ãããç¹ã«è€éãªã·ãŒã³ã§ãããŒã³ãŒã«ã®æ°ãå€§å¹ ã«åæžããããã©ãŒãã³ã¹ãåäžãããããšãã§ããŸãã
äŸïŒ éœåžã®ã·ãŒã³ã§ã¯ããªã¯ã«ãŒãžã§ã³ã«ãªã³ã°ã«ãããä»ã®å»ºç©ã®åŸãã«é ããŠãã建ç©ã®ã¬ã³ããªã³ã°ãé²ãããšãã§ããŸãã
ãªã¯ã«ãŒãžã§ã³ã«ãªã³ã°ã¯ãããŸããŸãªãã¯ããã¯ã䜿çšããŠå®è£ ã§ããŸããããšãã°ã次ã®ãããªãã®ããããŸãïŒ
- ãã©ã¹ã¿ã ã«ãªã³ã°ïŒ ã«ã¡ã©ã®ãã¥ãŒãã©ã¹ã¿ã ã®å€ã«ãããªããžã§ã¯ããç Žæ£ããŸãã
- ããã¯ãã§ãŒã¹ã«ãªã³ã°ïŒ èé¢ãåããŠããäžè§åœ¢ãç Žæ£ããŸãã
- éå±€çZãããã¡ãªã³ã°ïŒHZBïŒïŒ 深床ãããã¡ã®é局衚çŸã䜿çšããŠãã©ã®ãªããžã§ã¯ãããªã¯ã«ãŒããããŠããããè¿ éã«å€æããŸãã
8. 詳现床ã¬ãã«ïŒLODïŒ
詳现床ã¬ãã«ïŒLODïŒã¯ãã«ã¡ã©ããã®è·é¢ã«å¿ããŠãªããžã§ã¯ãã«ç°ãªã詳现ã¬ãã«ã䜿çšãããã¯ããã¯ã§ããã«ã¡ã©ããé ããªããžã§ã¯ãã¯ããäœã詳现ã¬ãã«ã§ã¬ã³ããªã³ã°ã§ãããããäžè§åœ¢ã®æ°ãæžããããã©ãŒãã³ã¹ãåäžããŸãã
äŸïŒ ã«ã¡ã©ã«è¿ããšãã¯é«è©³çްã¬ãã«ã§æšãã¬ã³ããªã³ã°ããé ããšãã¯äœè©³çްã¬ãã«ã§ã¬ã³ããªã³ã°ããŸãã
9. æ¡åŒµæ©èœã®è³¢æãªäœ¿çš
WebGLã¯ãé«åºŠãªæ©èœãžã®ã¢ã¯ã»ã¹ãæäŸã§ããããŸããŸãªæ¡åŒµæ©èœãæäŸããŸãããã ããæ¡åŒµæ©èœã䜿çšãããšãäºææ§ã®åé¡ãããã©ãŒãã³ã¹ã®ãªãŒããŒããããçºçããå¯èœæ§ããããŸããæ¡åŒµæ©èœã¯è³¢æã«ãå¿ èŠãªå Žåã«ã®ã¿äœ¿çšããŠãã ããã
äŸïŒ `ANGLE_instanced_arrays`æ¡åŒµæ©èœã¯ã€ã³ã¹ã¿ã³ã·ã³ã°ã«äžå¯æ¬ ã§ããã䜿çšããåã«å¿ ããã®å¯çšæ§ã確èªããŠãã ããã
10. ãããã¡ã€ãªã³ã°ãšãããã°
ãããã¡ã€ãªã³ã°ãšãããã°ã¯ãããã©ãŒãã³ã¹ã®ããã«ããã¯ãç¹å®ããããã«äžå¯æ¬ ã§ãããã©ãŠã¶ã®éçºè ããŒã«ïŒäŸïŒChrome DevToolsãFirefox Developer ToolsïŒã䜿çšããŠWebGLã¢ããªã±ãŒã·ã§ã³ããããã¡ã€ãªã³ã°ããããã©ãŒãã³ã¹ãæ¹åã§ããé åãç¹å®ããŸãã
Spector.jsãWebGL Insightãªã©ã®ããŒã«ã¯ãWebGL APIåŒã³åºããã·ã§ãŒããŒã®ããã©ãŒãã³ã¹ããã®ä»ã®ã¡ããªã¯ã¹ã«é¢ããè©³çŽ°ãªæ å ±ãæäŸã§ããŸãã
å ·äœçãªäŸãšã±ãŒã¹ã¹ã¿ãã£
ãããã®æé©åãã¯ããã¯ãå®éã®ã·ããªãªã§ã©ã®ããã«é©çšã§ããããããã€ãã®å ·äœäŸãèŠãŠã¿ãŸãããã
äŸ1ïŒããŒãã£ã¯ã«ã·ã¹ãã ã®æé©å
ããŒãã£ã¯ã«ã·ã¹ãã ã¯ãç ãç«ãççºãªã©ã®ãšãã§ã¯ããã·ãã¥ã¬ãŒãããããã«ãã䜿çšãããŸãã倿°ã®ããŒãã£ã¯ã«ãã¬ã³ããªã³ã°ããã®ã¯èšç®ã³ã¹ããé«ããªãå¯èœæ§ããããŸããããŒãã£ã¯ã«ã·ã¹ãã ãæé©åããæ¹æ³ã¯æ¬¡ã®ãšããã§ãïŒ
- ã€ã³ã¹ã¿ã³ã·ã³ã°ïŒ ã€ã³ã¹ã¿ã³ã·ã³ã°ã䜿çšããŠãåäžã®ãããŒã³ãŒã«ã§è€æ°ã®ããŒãã£ã¯ã«ãã¬ã³ããªã³ã°ããŸãã
- é ç¹å±æ§ïŒ äœçœ®ãé床ãè²ãªã©ãããŒãã£ã¯ã«ããšã®ããŒã¿ãé ç¹å±æ§ã«ä¿åããŸãã
- ã·ã§ãŒããŒã®æé©åïŒ èšç®ãæå°éã«æããããã«ããŒãã£ã¯ã«ã·ã§ãŒããŒãæé©åããŸãã
- ããŒã¿ãã¯ã¹ãã£ïŒ ããŒã¿ãã¯ã¹ãã£ã䜿çšããŠãã·ã§ãŒããŒããã¢ã¯ã»ã¹ããå¿ èŠã®ããããŒãã£ã¯ã«ããŒã¿ãä¿åããŸãã
äŸ2ïŒå°åœ¢ã¬ã³ããªã³ã°ãšã³ãžã³ã®æé©å
å°åœ¢ã¬ã³ããªã³ã°ã¯ãé¢äžããäžè§åœ¢ã®æ°ãå€ããããå°é£ãªå ŽåããããŸããå°åœ¢ã¬ã³ããªã³ã°ãšã³ãžã³ãæé©åããæ¹æ³ã¯æ¬¡ã®ãšããã§ãïŒ
- 詳现床ã¬ãã«ïŒLODïŒïŒ LODã䜿çšããŠãã«ã¡ã©ããã®è·é¢ã«å¿ããŠç°ãªã詳现ã¬ãã«ã§å°åœ¢ãã¬ã³ããªã³ã°ããŸãã
- ãã©ã¹ã¿ã ã«ãªã³ã°ïŒ ã«ã¡ã©ã®ãã¥ãŒãã©ã¹ã¿ã ã®å€ã«ããå°åœ¢ãã£ã³ã¯ãã«ãªã³ã°ããŸãã
- ãã¯ã¹ãã£ã¢ãã©ã¹ïŒ ãã¯ã¹ãã£ã¢ãã©ã¹ã䜿çšããŠããã¯ã¹ãã£ãã€ã³ãæäœã®æ°ãæžãããŸãã
- ããŒãã«ãããã³ã°ïŒ ããŒãã«ãããã³ã°ã䜿çšããŠãäžè§åœ¢ã®æ°ãå¢ãããã«å°åœ¢ã«ãã£ããŒã«ã远å ããŸãã
ã±ãŒã¹ã¹ã¿ãã£ïŒã¢ãã€ã«ã²ãŒã
AndroidãšiOSã®äž¡æ¹åãã«éçºãããã¢ãã€ã«ã²ãŒã ã¯ãããŸããŸãªããã€ã¹ã§ã¹ã ãŒãºã«åäœããå¿ èŠããããŸãããåœåãã²ãŒã ã¯ç¹ã«ããŒãšã³ãããã€ã¹ã§ããã©ãŒãã³ã¹ã®åé¡ã«æ©ãŸãããŠããŸããã以äžã®æé©åãå®è£ ããããšã§ãéçºè ã¯ããã©ãŒãã³ã¹ãå€§å¹ ã«åäžãããããšãã§ããŸããïŒ
- ãããã³ã°ïŒ éçããã³åçãããã³ã°ãå®è£ ããŠããããŒã³ãŒã«ã®æ°ãæžãããŸããã
- ãã¯ã¹ãã£å§çž®ïŒ å§çž®ãã¯ã¹ãã£ïŒäŸïŒETC1ãPVRTCïŒã䜿çšããŠãã¡ã¢ãªåž¯åå¹ ãåæžããŸããã
- ã·ã§ãŒããŒã®æé©åïŒ èšç®ãšåå²ãæå°éã«æããããã«ã·ã§ãŒããŒã³ãŒããæé©åããŸããã
- LODïŒ è€éãªã¢ãã«ã«LODãå®è£ ããŸããã
ãã®çµæãã²ãŒã ã¯ããŒãšã³ãã®æºåž¯é»è©±ãå«ãå¹ åºãããã€ã¹ã§ã¹ã ãŒãºã«åäœãããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãå€§å¹ ã«åäžããŸããã
ä»åŸã®ãã¬ã³ã
WebGLã¬ã³ããªã³ã°ã®ç¶æ³ã¯çµ¶ããé²åããŠããŸããæ³šç®ãã¹ãä»åŸã®ãã¬ã³ããããã€ã玹ä»ããŸãïŒ
- WebGL 2.0ïŒ WebGL 2.0ã¯ããã©ã³ã¹ãã©ãŒã ãã£ãŒãããã¯ããã«ããµã³ããªã³ã°ããªã¯ã«ãŒãžã§ã³ã¯ãšãªãªã©ãããé«åºŠãªæ©èœãžã®ã¢ã¯ã»ã¹ãæäŸããŸãã
- WebGPUïŒ WebGPUã¯ãWebGLãããå¹ççã§æè»ã«èšèšãããæ°ããã°ã©ãã£ãã¯ã¹APIã§ãã
- ã¬ã€ãã¬ãŒã·ã³ã°ïŒ ããŒããŠã§ã¢ãšãœãããŠã§ã¢ã®é²æ©ã®ãããã§ããã©ãŠã¶ã§ã®ãªã¢ã«ã¿ã€ã ã¬ã€ãã¬ãŒã·ã³ã°ããŸããŸãå®çŸå¯èœã«ãªã£ãŠããŸãã
çµè«
WebGLã¬ã³ããŒãã³ãã«ã®ããã©ãŒãã³ã¹ãç¹ã«ã³ãã³ããããã¡ã®åŠçé床ãæé©åããããšã¯ãã¹ã ãŒãºã§å¿çæ§ã®é«ãWebã¢ããªã±ãŒã·ã§ã³ãäœæããããã«äžå¯æ¬ ã§ããã³ãã³ããããã¡ã®åŠçé床ã«åœ±é¿ãäžããèŠå ãçè§£ãããã®èšäºã§èª¬æãããã¯ããã¯ãå®è£ ããããšã§ãéçºè ã¯WebGLã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ãå€§å¹ ã«åäžãããããè¯ããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãæäŸã§ããŸããããã©ãŒãã³ã¹ã®ããã«ããã¯ãç¹å®ããããã«å¿ããŠæé©åããããã«ãã¢ããªã±ãŒã·ã§ã³ã宿çã«ãããã¡ã€ãªã³ã°ããã³ãããã°ããããšãå¿ããªãã§ãã ããã
WebGLãé²åãç¶ããã«ã€ããŠãææ°ã®ãã¯ããã¯ãšãã¹ããã©ã¯ãã£ã¹ãåžžã«ææ¡ããŠããããšãéèŠã§ãããããã®ãã¯ããã¯ãåãå ¥ããããšã§ãWebGLã®å¯èœæ§ãæå€§éã«åŒãåºããäžçäžã®ãŠãŒã¶ãŒã«é©ãã»ã©é«æ§èœãªWebã°ã©ãã£ãã¯ã¹äœéšãåµé ããããšãã§ããŸãã